package com.shyroke.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.shyroke.entity.Permission;
import com.shyroke.entity.Role;
import com.shyroke.entity.User;

public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);

	User findByUsername(@Param("username")String username);

	/**
	 * 根据用户名和密码查找用户
	 * @param username
	 * @param pwd
	 * @return
	 */
	User findByPwd(@Param("username")String username,@Param("pwd")String pwd);

	
	/**
	 *根据用户名获取角色集合
	 * @param userName
	 * @return
	 */
	List<Role> selectRolesByUserName(@Param("username")String userName);

	/**
	 * 根据用户名获取权限集合
	 * @param userName
	 * @return
	 */
	List<Permission> selectpermissionByUserName(@Param("username")String userName);

	/**
	 * 获取用户信息
	 * @param username用户名
	 * @param password密码
	 * @return
	 */
	User selectUserByUserNameAndPwd(@Param("username")String username, @Param("pwd")String password);

	/**
	 * 根据用户id获取该用户的所有角色
	 * @param userId
	 * @return
	 */
	List<Role> selectRolesByUserId(@Param("userId")int userId);

	/**
	 * 根据用户id和用户名来查找是否存在这个用户
	 * @param userid
	 * @param userName
	 * @return
	 */
	User isExitByUserIdAndUserName(@Param("userid")int userid, @Param("userName")String userName);

	/**
	 * 验证用户密码是否正确
	 * @param id 用户id
	 * @param repassword 密码
	 * @return
	 */
	User isPwdCorret(@Param("usreId")Integer id, @Param("password")String repassword);

	/**
	 * 获取所有普通用户信息，不包括管理员信息,分页
	 * @param endIndex 
	 * @param beginIndex 
	 * @return
	 */
	List<User> selectAll(@Param("beginIndex")int beginIndex, @Param("endIndex")int endIndex);

	/**
	 * 获取数据库中普通用户的数量
	 * @return
	 */
	int selectCountByUser();

	/**
	 * 查找用户,分页
	 * @param username 用户名
	 * @param endIndex 
	 * @param beginIndex 
	 * @return
	 */
	List<User> selectByUserName(@Param("username")String username, @Param("beginIndex")int beginIndex, @Param("endIndex")int endIndex);

	
	/**
	 * 检验用户名是否存在
	 * @param username 用户名
	 * @return
	 */
	User isExitUserName(@Param("username")String username);

	/**
	 * 查找用户
	 * @param key 用户名
	 * @return
	 */
	List<User> selectByUserNameNoPage(@Param("username")String key);

	
}